package com.work.yshop.mvp.contract;

import com.work.yshop.model.CartItem;
import com.work.yshop.model.Favorite;
import com.work.yshop.model.Order;
import com.work.yshop.model.Product;
import com.work.yshop.model.ProductHistory;

import java.util.List;

/**
 * 用户数据契约类
 * 定义MVP架构中的View和Presenter接口
 */
public interface UserDataContract {

    /**
     * View接口
     */
    interface View {
        /**
         * 显示加载中
         */
        void showLoading();
        
        /**
         * 隐藏加载中
         */
        void hideLoading();
        
        /**
         * 显示错误信息
         */
        void showError(String message);
        
        /**
         * 显示浏览历史列表
         */
        void showHistoryList(List<ProductHistory> historyList);
        
        /**
         * 显示收藏列表
         */
        void showFavoriteList(List<Favorite> favoriteList);
        
        /**
         * 显示购物车列表
         */
        void showCartItems(List<CartItem> cartItems);
        
        /**
         * 显示订单列表
         */
        void showOrderList(List<Order> orderList);
        
        /**
         * 显示空视图
         */
        void showEmptyView(int type);
        
        /**
         * 显示操作结果
         */
        void showResult(boolean success, String message);
    }
    
    /**
     * Presenter接口
     */
    interface Presenter {
        /**
         * 绑定View
         */
        void attachView(View view);
        
        /**
         * 解绑View
         */
        void detachView();
        
        /**
         * 添加商品浏览记录
         */
        void addHistory(Product product);
        
        /**
         * 加载浏览历史列表
         */
        void loadHistoryList();
        
        /**
         * 清空浏览历史
         */
        void clearHistory();
        
        /**
         * 添加收藏
         */
        void addFavorite(Product product);
        
        /**
         * 取消收藏
         */
        void removeFavorite(int productId);
        
        /**
         * 检查是否已收藏
         */
        void checkFavoriteStatus(int productId, FavoriteCallback callback);
        
        /**
         * 加载收藏列表
         */
        void loadFavoriteList();
        
        /**
         * 添加商品到购物车
         */
        void addToCart(Product product, int quantity);
        
        /**
         * 更新购物车商品数量
         */
        void updateCartItemQuantity(int productId, int quantity);
        
        /**
         * 从购物车移除商品
         */
        void removeCartItem(int productId);
        
        /**
         * 加载购物车列表
         */
        void loadCartItems();
        
        /**
         * 清空购物车
         */
        void clearCart();
        
        /**
         * 创建订单
         */
        void createOrder(OrderCallback callback);
        
        /**
         * 创建只包含选定商品的订单
         */
        void createSelectedOrder(List<CartItem> selectedItems, OrderCallback callback);
        
        /**
         * 加载订单列表
         */
        void loadOrderList();
        
        /**
         * 直接保存订单(立即购买)
         */
        void saveDirectOrder(Order order, OrderCallback callback);
        
        /**
         * 添加商品到购物车并立即购买
         */
        void addToCartAndBuy(Product product, int quantity, BuyCallback callback);
    }
    
    /**
     * 收藏状态回调
     */
    interface FavoriteCallback {
        void onResult(boolean isFavorite);
    }
    
    /**
     * 订单回调
     */
    interface OrderCallback {
        void onSuccess(Order order);
        void onError(String message);
    }
    
    /**
     * 购买回调
     */
    interface BuyCallback {
        void onAddSuccess(int productId);
        void onAddFailed(String message);
    }
} 